設計一個瀏覽器歷史紀錄器,包含 access 到某個網頁並且可以找到上一頁 下一頁的功能
這題用比較好理解的方式解的話,double linked list 會是一個相當適合的解法
唯一要注意的地方在於,forward 與 backward 造訪的步數如果大於實際瀏覽過的頁面,則必須停留在最後或最一開始的頁面
class ListNode:
def __init__(self, val, prev=None, next=None):
self.val = val
self.prev = prev
self.next = next
class BrowserHistory:
def __init__(self, homepage: str):
self.curr = ListNode(homepage)
def visit(self, url: str) -> None:
self.curr.next = ListNode(url, prev=self.curr)
self.curr = self.curr.next
def back(self, steps: int) -> str:
while self.curr.prev and steps > 0:
self.curr = self.curr.prev
steps -= 1
return self.curr.val
def forward(self, steps: int) -> str:
while self.curr.next and steps > 0:
self.curr = self.curr.next
steps -= 1
return self.curr.val